#ifndef __SQLIST_H__
#define __SQLIST_H__

#define DATASIZE 1024

typedef int datatype;

typedef struct node_st 
{
    datatype data[DATASIZE];
    int last; //存储线性表中最后一个有效数据的下标。初始化是为-1。
}sqlist;


//创建线性表，返回为线性表结构体指针
sqlist *sqlist_create(void);


//传入一个二级指针，如果创建失败，返回空指针。
void sqlist_init(sqlist **ptr);

//插入数据，在i位置插入一个数据，插入的数据使用地址传参
int sqlist_insert(sqlist *me,int i,datatype *data);

//删除数据，删除线性表中第i个元素。返回是否成功
int sqlist_delete(sqlist *me,int i);

//查找。查找线性表总某个值，返回其下标。若没有找到返回-1.
int sqlist_find(sqlist *me, datatype *data);

//辅助函数，返回线性表是否为空。
int sqlist_isempty(sqlist *me);

//辅助函数，将线性表强制设置为空。返回是否设置成功。
int sqlist_setempty(sqlist *me);

//辅助函数，返回线性表中元素个数。
int sqlist_getnum(sqlist *me);

//遍历线性表
void sqlist_display(sqlist *me);

//销毁。返回销毁是否成功
int sqlist_destroy(sqlist *me);

//合并线性表。返回是否成功。
int sqlist_union(sqlist *list1,sqlist *list2);

#endif
